/*
 * Mainmenu.h
 *
 *  Created on: 19.11.2009
 *      Author: Sergej Schmidt
 */

#ifndef MAINMENUSTATE_H_
#define MAINMENUSTATE_H_

#include <Ogre.h>
#include <OIS.h>
#include <MyGUI.h>

#include "GameState.h"
#include "../Items.h"
#include "../Parser.h"
#include "../SwsoException.h"

using namespace std;

class MainMenuState: public GameState
{
public:
	void enter();
	void exit();
	void pause();
	void resume();

	void keyPressed( const OIS::KeyEvent& e );
	void keyReleased( const OIS::KeyEvent& e );

	void mouseMoved( const OIS::MouseEvent &e );
	void mousePressed( const OIS::MouseEvent &e, OIS::MouseButtonID id );
	void mouseReleased( const OIS::MouseEvent &e, OIS::MouseButtonID id );

	bool frameStarted(const Ogre::FrameEvent& evt);
	bool frameEnded(const Ogre::FrameEvent& evt);

	static MainMenuState* getInstance() { return &m_pMainMenuState; }
protected:
	MainMenuState() {
        mResourceGroup = "GUI";
        mSchemeFilename = "TaharezLookSkin.scheme";
        mSchemeName = "TaharezLook";
        mMouseName = "MouseArrow";
        mFontFilename = "";
        mFontName = "";
	}

	Ogre::Root*			m_pRoot;
	Ogre::RenderWindow*	m_pRenderWindow;
	Ogre::SceneManager*	m_pSceneMgr;
	Ogre::Viewport*		m_pViewport;
	//InputManager*		m_pInputManager;
	Ogre::Camera*		m_pCamera;
	// MyGUI
	MyGUI::Gui*			m_pGui;
	// DEBUG
	Items*				m_pItems;

    string mResourceGroup;
    string mSchemeFilename;
    string mSchemeName;
    string mMouseName;
    string mFontFilename;
    string mFontName;

    string mRootLayoutFilename;

    Ogre::SceneNode*	m_pFountainNode;
    Ogre::SceneNode*	m_pTerrain;
    Ogre::Light*		m_pLight;
    Ogre::Real			m_fGradus;

    // Temporare
    MyGUI::WidgetPtr	_widget;
    MyGUI::ButtonPtr	_button;
    MyGUI::ComboBoxPtr	_combobox;
	bool m_bExitGame;
private:
	static MainMenuState m_pMainMenuState;

	void Gui_Initialisieren();
	void OnClickNewGame( MyGUI::WidgetPtr _sender );
	void OnClickLoadGame( MyGUI::WidgetPtr _sender );
	void OnClickOption( MyGUI::WidgetPtr _sender );
	void OnClickCredit( MyGUI::WidgetPtr _sender );
	void OnClickQuit( MyGUI::WidgetPtr _sender );

	// TODO методы обработки GUI в разделе новая игра
	void OnClickNewGameOkOrCancel( MyGUI::WidgetPtr _sender );
	// TODO методы обработки GUI в разделе загрузить игру
	void OnClickLoadGameOkOrCancel( MyGUI::WidgetPtr _sender );
	// TODO методы обработки GUI в разделе настройки
	void OnClickOptionOkOrCancel( MyGUI::WidgetPtr _sender );
	void OnComboAcceptOptionLanguage( MyGUI::ComboBoxPtr _sender, size_t _index );
	// TODO методы обработки GUI в разделе авторы
};
#endif /* MAINMENUSTATE_H_ */
